#include "mainwindow.h"
#include "logininterface.h"
#include <QApplication>
#include "mainwindow.h"
#include <QMutex>
#include <QApplication>
#include <QDir>
#include <iostream>
#include "function/function.h"

int LineNumber(QString Path)
{
    int line = 0;
    QFile file(Path);


    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
        return 0;

//     QTextStream in(&file);
     while (!file.atEnd())
     {
         QString linestr = file.readLine();
         line++;
     }
     file.close();

     return line;
}

void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    static QMutex mutex;
    QMutexLocker lock(&mutex);



    QString message;
    message = qFormatLogMessage(type, context, msg); //获取 qSetMessagePattern 设置的格式
    message.append("\r\n");

    QDate mydate=QDate::currentDate();
//    QTime mytime=QTime::currentTime();

    //按日期每天创建一个日志文件
    QString Path = QString("%1logfile/%2.txt").arg(MY_PATH).arg(mydate.toString("yyyy-MM-dd"));

//    int line = LineNumber(Path)+1;//获取行号
//    message = QString::number(line)+" "+message;

    QFile file(Path);
    if(file.open(QFile::WriteOnly | QFile::Append))
    {
        file.write(message.toLocal8Bit());
    }
    file.close();

    QByteArray cdata = msg.toLocal8Bit();
    std::cout << std::string(cdata) << std::endl;
}

int main(int argc, char *argv[])
{
    //创建一个文件夹存放下载文件,已经存在返回true
    QDir dir;
    dir.mkpath(MY_PATH);//存放药箱插件文件
    dir.mkpath(QString("%1logfile").arg(MY_PATH));//存放日志文件
    dir.mkpath(QString("%1DigitalVeinUser/").arg(MY_PATH));//存放药箱插件文件

    //设置qDebug 输出格式
//    qSetMessagePattern("[%{line} %{time yyyy-MM-dd hh:mm:ss ddd} %{file} %{function}] %{message}");//行号 日期 时间 文件路径 成员函数 打印信息
    qSetMessagePattern("[%{line} %{time yyyy-MM-dd hh:mm:ss ddd} %{file} %{function}] %{message}");//行号 日期 时间 文件路径 成员函数 打印信息
    //安装消息器
    qInstallMessageHandler(myMessageOutput);
//    qInstallMessageHandler(0);//恢复消息处理程序



    QApplication a(argc, argv);

    configuration("client.ini");

    //进入登入界面
    LoginInterface login;
    login.show();
//    MainWindow w;
//    w.show();
    return a.exec();
}
